Current computing devices may trace the execution of a computer program. Execution trace allows the computing device to reconstruct the sequence of instructions that were executed when the program was traced. Applications such as debuggers may map low-level execution trace data to the statements, functions, and other commands of the traced program. For example, a function call stack or back trace may be generated at a particular point in the execution trace by tracking call and return instructions.
Execution trace data may include gaps between multiple disconnected execution segments. Trace gaps may be caused by, for example, decode errors, trace data losses (e.g., trace hardware overflows), trace filtering (e.g., disabling/enabling tracing), or parallel decode (e.g., splitting the execution trace and decoding in parallel). Trace gaps may make trace analysis difficult or impossible, for example by interfering with correctly detecting functions or generating the call stack.